/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.aspas.modelo;

import br.com.aspas.modelo.Evento;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author felipe
 */
@Entity
@Table(name = "cursos_evento")
@NamedQueries({
    @NamedQuery(name = "CursosEvento.findAll", query = "SELECT c FROM CursosEvento c"),
    @NamedQuery(name = "CursosEvento.findByCurso", query = "SELECT c FROM CursosEvento c WHERE c.cursosEventoPK.curso = :curso"),
    @NamedQuery(name = "CursosEvento.findByEvento", query = "SELECT c FROM CursosEvento c WHERE c.cursosEventoPK.evento = :evento"),
    @NamedQuery(name = "CursosEvento.findByData", query = "SELECT c FROM CursosEvento c WHERE c.data = :data"),
    @NamedQuery(name = "CursosEvento.findByCapacidade", query = "SELECT c FROM CursosEvento c WHERE c.capacidade = :capacidade")})

public class CursosEvento implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected CursosEventoPK cursosEventoPK;
    @Basic(optional = false)
    @Column(name = "data")
    @Temporal(TemporalType.DATE)
    private Date data;
    @Basic(optional = false)
    @Column(name = "capacidade")
    private int capacidade;
    @JoinColumn(name = "curso", referencedColumnName = "codigo", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Cursos cursos;
    @JoinColumn(name = "evento", referencedColumnName = "codigo", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Evento evento;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "cursosEvento")
    private List<CursosPessoaFisica> cursosPessoaFisicaList;

    public CursosEvento() {
    }

    public CursosEvento(CursosEventoPK cursosEventoPK) {
        this.cursosEventoPK = cursosEventoPK;
    }

    public CursosEvento(CursosEventoPK cursosEventoPK, Date data, int capacidade) {
        this.cursosEventoPK = cursosEventoPK;
        this.data = data;
        this.capacidade = capacidade;
    }

    public CursosEvento(int curso, int evento) {
        this.cursosEventoPK = new CursosEventoPK(curso, evento);
    }

    public CursosEventoPK getCursosEventoPK() {
        return cursosEventoPK;
    }

    public void setCursosEventoPK(CursosEventoPK cursosEventoPK) {
        this.cursosEventoPK = cursosEventoPK;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public int getCapacidade() {
        return capacidade;
    }

    public void setCapacidade(int capacidade) {
        this.capacidade = capacidade;
    }

    public Cursos getCursos() {
        return cursos;
    }

    public void setCursos(Cursos cursos) {
        this.cursos = cursos;
    }

    public Evento getEvento1() {
        return evento;
    }

    public void setEvento1(Evento evento1) {
        this.evento = evento;
    }

    public List<CursosPessoaFisica> getCursosPessoaFisicaList() {
        return cursosPessoaFisicaList;
    }

    public void setCursosPessoaFisicaList(List<CursosPessoaFisica> cursosPessoaFisicaList) {
        this.cursosPessoaFisicaList = cursosPessoaFisicaList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cursosEventoPK != null ? cursosEventoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof CursosEvento)) {
            return false;
        }
        CursosEvento other = (CursosEvento) object;
        if ((this.cursosEventoPK == null && other.cursosEventoPK != null) || (this.cursosEventoPK != null && !this.cursosEventoPK.equals(other.cursosEventoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "teste.CursosEvento[cursosEventoPK=" + cursosEventoPK + "]";
    }

}
